MVVM Light Toolkit হল একটি জনপ্রিয় লাইব্রেরি যা MVVM (Model-View-ViewModel) ডিজাইন প্যাটার্নের উপর ভিত্তি করে তৈরি। এটি WPF, Xamarin, এবং Silverlight এর মতো প্রযুক্তিতে MVVM প্যাটার্ন বাস্তবায়নকে সহজ করে তোলে। এই টুলকিটের অন্যতম প্রধান বৈশিষ্ট্য হল Messenger Class, যা ViewModel গুলির মধ্যে যোগাযোগের জন্য ব্যবহৃত হয়।
MVVM Light Toolkit MVVM প্যাটার্নের একাধিক মৌলিক ধারণা সরবরাহ করে, যেমন:
Messenger Class হল MVVM Light Toolkit এর একটি গুরুত্বপূর্ণ উপাদান। এটি ViewModel এবং View এর মধ্যে, অথবা একাধিক ViewModel এর মধ্যে, বার্তা পাঠানোর এবং গ্রহণ করার জন্য ব্যবহৃত হয়। Messenger সাধারণত EventAggregator হিসাবে কাজ করে, যা কোনো নির্দিষ্ট ধরনের ViewModel অথবা View কে সরাসরি জানানো ছাড়াই তাদের মধ্যে যোগাযোগের সুযোগ দেয়।
এটি ViewModel এর মধ্যে ডেটা শেয়ার বা View এর মধ্যে কোনো নির্দিষ্ট ইভেন্ট ট্রিগার করার জন্য ব্যবহৃত হতে পারে।
ধরা যাক, আপনি একটি অ্যাপ্লিকেশনে এমন একটি পরিস্থিতি তৈরি করতে চান যেখানে একটি ViewModel অন্য ViewModel অথবা View-এ বার্তা পাঠাতে পারে। এই কাজটি সহজে করতে Messenger Class ব্যবহৃত হতে পারে।
ViewModel-এ, Messenger ক্লাস ব্যবহার করে একটি বার্তা পাঠানোর উদাহরণ:
using GalaSoft.MvvmLight;
using GalaSoft.MvvmLight.Messaging;
public class MainViewModel : ViewModelBase
{
public MainViewModel()
{
// Messenger এর মাধ্যমে বার্তা পাঠানো
Messenger.Default.Send("Hello from MainViewModel");
}
}
এখানে, Messenger.Default.Send()
মেথডটি একটি বার্তা পাঠানোর কাজ করে। এটি একটি স্ট্রিং বার্তা পাঠাচ্ছে, কিন্তু আপনি যে কোনো ধরনের অবজেক্ট পাঠাতে পারেন।
অন্য ViewModel বা View-এ বার্তা গ্রহণের জন্য, আপনি Register
মেথড ব্যবহার করতে পারেন।
using GalaSoft.MvvmLight.Messaging;
public class AnotherViewModel : ViewModelBase
{
public AnotherViewModel()
{
// বার্তা গ্রহণ করার জন্য রেজিস্টার করা
Messenger.Default.Register<string>(this, (message) =>
{
// বার্তা গ্রহণ এবং প্রসেস করা
Console.WriteLine("Received message: " + message);
});
}
}
এখানে, AnotherViewModel বার্তা গ্রহণের জন্য Messenger.Default.Register ব্যবহার করছে। এটি একটি স্ট্রিং বার্তা গ্রহণ করছে এবং তা কনসোলে প্রদর্শন করছে।
ধরা যাক, MainViewModel থেকে AnotherViewModel-এ একটি বার্তা পাঠানো হচ্ছে, এবং AnotherViewModel সেই বার্তাটি গ্রহণ করবে:
// MainViewModel থেকে বার্তা পাঠানো
Messenger.Default.Send("Data from MainViewModel", "MyMessage");
// AnotherViewModel-এ বার্তা গ্রহণ
Messenger.Default.Register<string>(this, "MyMessage", (message) =>
{
Console.WriteLine("Received message: " + message);
});
এখানে:
"MyMessage"
বার্তার একটি ট্যাগ হিসেবে কাজ করে। এটি বার্তাগুলির মধ্যে পার্থক্য করতে সাহায্য করে, যাতে নির্দিষ্ট একটি বার্তা টাইপের জন্য সাবস্ক্রাইব করা যায়।Unregister:
Messenger.Default.Unregister(this);
common.read_more